package com.linln.modules.api.domain;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.linln.common.enums.StatusEnum;
import com.linln.common.utils.StatusUtil;
import com.linln.modules.system.domain.User;
import lombok.Data;
import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;
import org.hibernate.annotations.Where;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 * @author cocia
 * @date 2020/08/03
 */
@Data
@Entity
@Table(name="api_project")
@EntityListeners(AuditingEntityListener.class)
@Where(clause = StatusUtil.NOT_DELETE)
public class Project implements Serializable {
    // 主键ID
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;//对象项目序号
    // 项目名称
    private String title;//对象项目名称
    // 项目编号
    private String projCode;//对象项目名称
    // 备注
    private String remark;
    // 创建时间
    @CreatedDate
    private Date createDate;
    // 更新时间
    @LastModifiedDate
    private Date updateDate;

    // 创建者
    @CreatedBy
    @ManyToOne(fetch=FetchType.LAZY)
    @NotFound(action=NotFoundAction.IGNORE)
    @JoinColumn(name="create_by")
    @JsonIgnore
    private User createBy;
    // 更新者
    @LastModifiedBy
    @ManyToOne(fetch=FetchType.LAZY)
    @NotFound(action=NotFoundAction.IGNORE)
    @JoinColumn(name="update_by")
    @JsonIgnore
    private User updateBy;
    // 数据状态
    private Byte status = StatusEnum.OK.getCode();
    // 项目类型
    private byte type;
    // 进展
    private String jz;
    // 项目图片
    private String imageIds;
    /**
     * 以下字段为集团项目
     */
    //建设内容
    private String jsnr;
    //总用地面积(亩)
    private Double zydmj;
    //总建筑面积(总建筑面积（平方米）)
    private Double zjzmj;
    //项目分类
    private String xmfl;
    //A代建项目/B市场化项目/C政府指令项目(道路、安置、配套公建)
    private String abclx;
    //施工工期（合同）
    private String sggq;
    //立项的总投资额
    private Double ztz;
    //立项的总投资额
    private Double ljtz2019;
    //全年预计实际完成投资额
    private Double qnyjtz;
    //全年预计完成投资额
    private Double qnsjtz;
    //项目业主
    private String yzdw;
    //建设单位
    private String jsdw;
    //项目定位
    private String xmdw;
    //设计单位名称
    private String sjdwmc;
    //施工单位名称
    private String sgdwmc;
    //监理单位名称
    private String jldwmc;
    //业主代表
    private String yzdb;
    //所属乡镇
    private String ssxz;
    //挂钩责任人
    private String ggzrr;
    //计划开始时间
    private Date jhkssj;
    //计划竣工时间
    private Date jhjgsj;
    //简称
    private String jc;
    //情况
    private String qk;
    //备注
    private String bz;
    //月数
    private int ys;
    //本月现场情况
    private String byxcqk;
    //本季度进度
    private String bjdjd;
    //人工数量
    private int rgsl;
    //管理人员数量
    private int glrysl;
}